<?php
class Conexion  // se declara una clase para hacer la conexion con la base de datos
{
	var $con;
	function Conexion()
	{
		// se definen los datos del servidor de base de datos 
		$conection['server']="localhost";  //host
		$conection['user']="root";         //  usuario
		$conection['pass']="";             //password
		$conection['base']="sistema_intranet";           //base de datos
		
		// crea la conexion pasandole el servidor , usuario y clave
		$conect= mysql_connect($conection['server'],$conection['user'],$conection['pass']);

		if ($conect) // si la conexion fue exitosa , selecciona la base
		{
			mysql_select_db($conection['base']);			
			$this->con=$conect;
		}
	}
	function getConexion() // devuelve la conexion
	{
		return $this->con;
	}
	function Close()  // cierra la conexion
	{
		mysql_close($this->con);
	}	

}
class sQuery   // se declara una clase para poder ejecutar las consultas, esta clase llama a la clase anterior
{

	var $coneccion;
	var $consulta;
	var $resultados;
	function sQuery()  // constructor, solo crea una conexion usando la clase "Conexion"
	{
		$this->coneccion= new Conexion();
	}
	function executeQuery($cons)  // metodo que ejecuta una consulta y la guarda en el atributo $pconsulta
	{
		$this->consulta= mysql_query($cons,$this->coneccion->getConexion());
		return $this->consulta;
	}	
	function getResults()   // retorna la consulta en forma de result.
	{return $this->consulta;}
	
	function Close()		// cierra la conexion
	{$this->coneccion->Close();}	
	
	function Clean() // libera la consulta
	{mysql_free_result($this->consulta);}
	
	function getResultados() // debuelve la cantidad de registros encontrados
	{return mysql_affected_rows($this->coneccion->getConexion()) ;}
	
	function getAffect() // devuelve las cantidad de filas afectadas
	{return mysql_affected_rows($this->coneccion->getConexion()) ;}

    function fetchAll()
    {
        $rows=array();
		if ($this->consulta)
		{
			while($row=  mysql_fetch_array($this->consulta))
			{
				$rows[]=$row;
			}
		}
        return $rows;
    }
}




class Cliente
{
	var $nombre;     //se declaran los atributos de la clase, que son los atributos del cliente
	var $a_paterno;
	var $a_materno;
	Var $email;
	var $usuario;
	var $contrasena;
	Var $id_usuario;

    public static function getClientes() 
		{
			$obj_cliente=new sQuery();
			$obj_cliente->executeQuery("select * from usuarios"); // ejecuta la consulta para traer al cliente

			return $obj_cliente->fetchAll(); // retorna todos los clientes
		}

	function Cliente($nro=0) // declara el constructor, si trae el numero de cliente lo busca , si no, trae todos los clientes
	{
		if ($nro!=0)
		{
			$obj_cliente=new sQuery();
			$result=$obj_cliente->executeQuery("select * from usuarios where id_usuario = $nro"); // ejecuta la consulta para traer al cliente 
			$row=mysql_fetch_array($result);
			$this->id_usuario=$row['id_usuario'];
			$this->nombre=$row['nombre'];
			$this->a_paterno=$row['a_paterno'];
			$this->a_materno=$row['a_materno'];
			$this->email=$row['email'];
			$this->usuario=$row['usuario'];
			$this->contrasena=$row['contrasena'];
			
		}
	}
		
		// metodos que devuelven valores
	function getId_usuario()
	 { return $this->id_usuario;}
	function getNombre()
	 { return $this->nombre;}
	function getA_paterno()
	 { return $this->a_paterno;}
	function getA_materno()
	 { return $this->a_materno;}
	function getEmail()
	 { return $this->email;}
	function getUsuario()
	 { return $this->usuario;}
	function getContrasena()
	 { return $this->contrasena;}
	 
		// metodos que setean los valores
	function setNombre($val)
	 { $this->nombre=$val;}
	function setA_paterno($val)
	 {  $this->a_paterno=$val;}
	function setA_materno($val)
	 {  $this->a_materno=$val;}
	function setEmail($val)
	 {  $this->email=$val;}
	function setUsuario($val)
	 {  $this->usuario=$val;}
	function setContrasena($val)
	 {  $this->contrasena=$val;}

    function save()
    {
        if($this->id_usuario)
        {$this->updateCliente();}
        else
        {$this->insertCliente();}
    }
	private function updateCliente()	// actualiza el cliente cargado en los atributos
	{
			$obj_cliente=new sQuery();
			$query="update usuarios set nombre='$this->nombre', a_paterno='$this->a_paterno',a_materno='$this->a_materno',email='$this->email', usuario='$this->usuario', contrasena=md5('$this->contrasena') where id_usuario = $this->id_usuario";
			$obj_cliente->executeQuery($query); // ejecuta la consulta para traer al cliente 
			return $obj_cliente->getAffect(); // retorna todos los registros afectados
	
	}
	private function insertCliente()	// inserta el cliente cargado en los atributos
	{
			$obj_cliente=new sQuery();
			$query="insert into impresoras( marca, modelo, tipo, ubicacion, tc, ip) values ('$this->marca', '$this->modelo','$this->tipo','$this->ubicacion','$this->tc', '$this->ip')";
			
			$obj_cliente->executeQuery($query); // ejecuta la consulta para traer al cliente 
			return $obj_cliente->getAffect(); // retorna todos los registros afectados
	
	}	
	function delete()	// elimina el cliente
	{
			$obj_cliente=new sQuery();
			$query="delete from usuarios where id_usuario=$this->id_usuario";
			$obj_cliente->executeQuery($query); // ejecuta la consulta para  borrar el cliente
			return $obj_cliente->getAffect(); // retorna todos los registros afectados
	
	}	
	
}
function cleanString($string)
{
    $string=trim($string);
    $string=mysql_escape_string($string);
	$string=htmlspecialchars($string);
	
    return $string;
}